Multi-tenant data stores are used in environments where multiple entities store and/or manage their data in a common repository. These may be used, for example, in cloud storage applications, e-commerce platforms (e.g., “virtual storefronts”), online service providers, resource management services, and other situations using multi-tenant data stores and any number of other resources.
It is common in platforms and applications supporting a large community of users for different users to have varying data management needs. For example, in a multi-seller e-commerce platform, a large number of sellers contribute their catalog data to a platform that may manage all of the data pertaining to their operations, such as orders, shipments, performance, and payments. The data management needs for a specific seller may vary based on the size of the catalog, the rate at which they receive orders, their history and growth on the platform, etc. For example, an established seller with a large catalog may need the ability to filter their data set using multiple dimensions, e.g., category of item and brand name. On the other hand, the search requirements for a new seller may be met with a more limited capability, e.g., limited to keyword searches or the like.
Different users may also have different requirements with respect to record maintenance, data access time, permissible costs, etc. For examples, one seller may choose to retain their order history for six years, while another seller may wish to keep it for perpetuity. Additionally, one customer may be willing to accept increased access time for a reduced cost, whereas another customer may be willing to pay more for shorter access time, etc.
Such environments also make scaling the multi-tenant data store more challenging as each user of such environment may be subject to varying rates of growth, which the platform may not be able to estimate accurately. Typically, each user of a multi-tenant data store is managed using a common scheme, and the data store is configured using a common architecture that is compatible with all of the users sharing the platform according to the common scheme. Systemic issues arising from operating such platforms at larger and larger scales will impact all the users of the platform.